//
//  MOFormField.h
//  MOED, Version 1.0
//
//  http://moed.googlecode.com/
//
//  Copyright (c) 2011, Eternity Technologies.
//  All rights reserved.
// 
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//    * Redistributions of source code must retain the above copyright
//      notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above copyright
//      notice, this list of conditions and the following disclaimer in the
//      documentation and/or other materials provided with the distribution.
//    * Neither the name of the Eternity Technologies nor the
//      names of its contributors may be used to endorse or promote products
//      derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY ETERNITY TECHNOLOGIES ''AS IS'' AND ANY
//  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//  DISCLAIMED. IN NO EVENT SHALL ETERNITY TECHNOLOGIES BE LIABLE FOR ANY
//  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
//  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#import <Foundation/Foundation.h>

@class MOFormDescription;

typedef	NSInteger	MOFieldType;

enum {
	MOFieldTypeString	= 1,
	MOFieldTypeInteger	= 2,
	MOFieldTypeFloat	= 3,
	MOFieldTypeModel	= 4
};

@interface MOFormField : NSObject {
	
	NSString			*managedObjectKey;
	NSString			*labelText;
	MOFieldType			fieldType;
	BOOL				required;
	BOOL				longTextModeInReadOnly;

	MOFormDescription	*associationForm;
	
	NSArray				*options;

	NSInteger			tag;
	BOOL				useLocalizedStrings;

}

@property (nonatomic, readonly) NSString *managedObjectKey;
@property (nonatomic, readonly) NSString *labelText;
@property (nonatomic, readonly) MOFieldType fieldType;
@property (nonatomic, readonly) BOOL required;
@property (nonatomic, readonly) BOOL longTextModeInReadOnly;
@property (nonatomic, readonly) NSArray *options;
@property (nonatomic, readonly) MOFormDescription *associationForm;

@property (nonatomic, assign) NSInteger tag;
@property (nonatomic, assign) BOOL useLocalizedStrings;

- (id) initWithJSON:(id) jsonObject;

@end
